package roborally;

/**
 * Classes for representing robots should implement <code>IRobot</code>.
 */
public interface IRobot {

	public abstract long getxPos();
	
	public abstract long getyPos();
	
	public abstract int getDirectionNumber();
	
	public abstract void move();
	
	public abstract void turnClockwise();
	
	public abstract void turnCounterClockwise();
	
	public abstract long getDistanceTo(long x, long y);
	
	public abstract double getEnergy();
	
	public abstract void recharge(double amount);
	
	public abstract double getEnergyRequiredToReach(long x, long y, boolean withTurn);
	
	public abstract void moveNextTo(long x, long y,  boolean withTurn);
	
	public abstract double getPriority(long goToX, long goToY);
	
	public abstract IRobot clone();
}
